package com.ruoyi.system.mapper;

import java.util.List;
import org.apache.ibatis.annotations.Param;
import com.ruoyi.system.domain.AData;
import org.apache.ibatis.annotations.Param;

/**
 * 素材库类别Mapper接口
 *
 * @author gf
 * @date 2024-10-21
 */
public interface ADataMapper {
    /**
     * 查询素材库类别
     *
     * @param id 素材库类别主键
     * @return 素材库类别
     */
    public AData selectADataById(Long id);

    /**
     * 查询素材库类别列表
     *
     * @param aData 素材库类别
     * @return 素材库类别集合
     */
    public List<AData> selectADataList(AData aData);

    /**
     * 新增素材库类别
     *
     * @param aData 素材库类别
     * @return 结果
     */
    public int insertAData(AData aData);

    /**
     * 修改素材库类别
     *
     * @param aData 素材库类别
     * @return 结果
     */
    public int updateAData(AData aData);

    /**
     * 删除素材库类别
     *
     * @param id 素材库类别主键
     * @return 结果
     */
    public int deleteADataById(Long id);

    /**
     * 批量删除素材库类别
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteADataByIds(Long[] ids);
    /**
     * 逻辑删除素材库类别
     *
     * @param id 素材库类别主键
     * @return 结果
     */
    public int logicDeleteADataById(Long id);

    /**
     * 批量逻辑删除素材库类别
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int logicDeleteADataByIds(Long[] ids);

    /**
     * 校验名称是否唯一
     *
     * @param name 名称
     * @param parentId 父ID
     * @return 结果
     */
    public AData checkNameUnique(@Param("dataName") String name, @Param("parentId") Long parentId);

    /**
     * 根据ID查询所有子分类（正常状态）
     *
     * @param categoryId 分类ID
     * @return 子分类数
     */
    public int selectNormalChildrenCategoryById(Long categoryId);

    /**
     * 修改所在分类正常状态
     *
     * @param categoryIds 分类ID组
     */
    public void updateCategoryStatusNormal(Long[] categoryIds);

    /**
     * 查询子级分类列表
     *
     * @param parentId 分类
     * @return 分类集合
     */
    public List<AData> selectChildrenById(Long parentId);

    /**
     * 修改子元素关系
     *
     * @param categories 分类
     * @return 分类集合
     */
    public int updateCategoryChildren(@Param("categories") List<AData> categories);
}
